home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / bits / resource.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-11-14  |  6.8 KB  |  226 lines

  1. /* Bit values & structures for resource limits.  Linux version.
  2.    Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005
  3.    Free Software Foundation, Inc.
  4.    This file is part of the GNU C Library.
  5.  
  6.    The GNU C Library is free software; you can redistribute it and/or
  7.    modify it under the terms of the GNU Lesser General Public
  8.    License as published by the Free Software Foundation; either
  9.    version 2.1 of the License, or (at your option) any later version.
  10.  
  11.    The GNU C Library is distributed in the hope that it will be useful,
  12.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.    Lesser General Public License for more details.
  15.  
  16.    You should have received a copy of the GNU Lesser General Public
  17.    License along with the GNU C Library; if not, write to the Free
  18.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  19.    02111-1307 USA.  */
  20.  
  21. #ifndef _SYS_RESOURCE_H
  22. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  23. #endif
  24.  
  25. #include <bits/types.h>
  26.  
  27. /* Transmute defines to enumerations.  The macro re-definitions are
  28.    necessary because some programs want to test for operating system
  29.    features with #ifdef RUSAGE_SELF.  In ISO C the reflexive
  30.    definition is a no-op.  */
  31.  
  32. /* Kinds of resource limit.  */
  33. enum __rlimit_resource
  34. {
  35.   /* Per-process CPU limit, in seconds.  */
  36.   RLIMIT_CPU = 0,
  37. #define RLIMIT_CPU RLIMIT_CPU
  38.  
  39.   /* Largest file that can be created, in bytes.  */
  40.   RLIMIT_FSIZE = 1,
  41. #define    RLIMIT_FSIZE RLIMIT_FSIZE
  42.  
  43.   /* Maximum size of data segment, in bytes.  */
  44.   RLIMIT_DATA = 2,
  45. #define    RLIMIT_DATA RLIMIT_DATA
  46.  
  47.   /* Maximum size of stack segment, in bytes.  */
  48.   RLIMIT_STACK = 3,
  49. #define    RLIMIT_STACK RLIMIT_STACK
  50.  
  51.   /* Largest core file that can be created, in bytes.  */
  52.   RLIMIT_CORE = 4,
  53. #define    RLIMIT_CORE RLIMIT_CORE
  54.  
  55.   /* Largest resident set size, in bytes.
  56.      This affects swapping; processes that are exceeding their
  57.      resident set size will be more likely to have physical memory
  58.      taken from them.  */
  59.   __RLIMIT_RSS = 5,
  60. #define    RLIMIT_RSS __RLIMIT_RSS
  61.  
  62.   /* Number of open files.  */
  63.   RLIMIT_NOFILE = 7,
  64.   __RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same.  */
  65. #define RLIMIT_NOFILE RLIMIT_NOFILE
  66. #define RLIMIT_OFILE __RLIMIT_OFILE
  67.  
  68.   /* Address space limit.  */
  69.   RLIMIT_AS = 9,
  70. #define RLIMIT_AS RLIMIT_AS
  71.  
  72.   /* Number of processes.  */
  73.   __RLIMIT_NPROC = 6,
  74. #define RLIMIT_NPROC __RLIMIT_NPROC
  75.  
  76.   /* Locked-in-memory address space.  */
  77.   __RLIMIT_MEMLOCK = 8,
  78. #define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK
  79.  
  80.   /* Maximum number of file locks.  */
  81.   __RLIMIT_LOCKS = 10,
  82. #define RLIMIT_LOCKS __RLIMIT_LOCKS
  83.  
  84.   /* Maximum number of pending signals.  */
  85.   __RLIMIT_SIGPENDING = 11,
  86. #define RLIMIT_SIGPENDING __RLIMIT_SIGPENDING
  87.  
  88.   /* Maximum bytes in POSIX message queues.  */
  89.   __RLIMIT_MSGQUEUE = 12,
  90. #define RLIMIT_MSGQUEUE __RLIMIT_MSGQUEUE
  91.  
  92.   /* Maximum nice priority allowed to raise to.
  93.      Nice levels 19 .. -20 correspond to 0 .. 39
  94.      values of this resource limit.  */
  95.   __RLIMIT_NICE = 13,
  96. #define RLIMIT_NICE __RLIMIT_NICE
  97.  
  98.   /* Maximum realtime priority allowed for non-priviledged
  99.      processes.  */
  100.   __RLIMIT_RTPRIO = 14,
  101. #define RLIMIT_RTPRIO __RLIMIT_RTPRIO
  102.  
  103.   __RLIMIT_NLIMITS = 15,
  104.   __RLIM_NLIMITS = __RLIMIT_NLIMITS
  105. #define RLIMIT_NLIMITS __RLIMIT_NLIMITS
  106. #define RLIM_NLIMITS __RLIM_NLIMITS
  107. };
  108.  
  109. /* Value to indicate that there is no limit.  */
  110. #ifndef __USE_FILE_OFFSET64
  111. # define RLIM_INFINITY ((unsigned long int)(~0UL))
  112. #else
  113. # define RLIM_INFINITY 0xffffffffffffffffuLL
  114. #endif
  115.  
  116. #ifdef __USE_LARGEFILE64
  117. # define RLIM64_INFINITY 0xffffffffffffffffuLL
  118. #endif
  119.  
  120. /* We can represent all limits.  */
  121. #define RLIM_SAVED_MAX    RLIM_INFINITY
  122. #define RLIM_SAVED_CUR    RLIM_INFINITY
  123.  
  124.  
  125. /* Type for resource quantity measurement.  */
  126. #ifndef __USE_FILE_OFFSET64
  127. typedef __rlim_t rlim_t;
  128. #else
  129. typedef __rlim64_t rlim_t;
  130. #endif
  131. #ifdef __USE_LARGEFILE64
  132. typedef __rlim64_t rlim64_t;
  133. #endif
  134.  
  135. struct rlimit
  136.   {
  137.     /* The current (soft) limit.  */
  138.     rlim_t rlim_cur;
  139.     /* The hard limit.  */
  140.     rlim_t rlim_max;
  141.   };
  142.  
  143. #ifdef __USE_LARGEFILE64
  144. struct rlimit64
  145.   {
  146.     /* The current (soft) limit.  */
  147.     rlim64_t rlim_cur;
  148.     /* The hard limit.  */
  149.     rlim64_t rlim_max;
  150.  };
  151. #endif
  152.  
  153. /* Whose usage statistics do you want?  */
  154. enum __rusage_who
  155. {
  156.   /* The calling process.  */
  157.   RUSAGE_SELF = 0,
  158. #define RUSAGE_SELF RUSAGE_SELF
  159.  
  160.   /* All of its terminated child processes.  */
  161.   RUSAGE_CHILDREN = -1
  162. #define RUSAGE_CHILDREN RUSAGE_CHILDREN
  163. };
  164.  
  165. #define __need_timeval
  166. #include <bits/time.h>        /* For `struct timeval'.  */
  167.  
  168. /* Structure which says how much of each resource has been used.  */
  169. struct rusage
  170.   {
  171.     /* Total amount of user time used.  */
  172.     struct timeval ru_utime;
  173.     /* Total amount of system time used.  */
  174.     struct timeval ru_stime;
  175.     /* Maximum resident set size (in kilobytes).  */
  176.     long int ru_maxrss;
  177.     /* Amount of sharing of text segment memory
  178.        with other processes (kilobyte-seconds).  */
  179.     long int ru_ixrss;
  180.     /* Amount of data segment memory used (kilobyte-seconds).  */
  181.     long int ru_idrss;
  182.     /* Amount of stack memory used (kilobyte-seconds).  */
  183.     long int ru_isrss;
  184.     /* Number of soft page faults (i.e. those serviced by reclaiming
  185.        a page from the list of pages awaiting reallocation.  */
  186.     long int ru_minflt;
  187.     /* Number of hard page faults (i.e. those that required I/O).  */
  188.     long int ru_majflt;
  189.     /* Number of times a process was swapped out of physical memory.  */
  190.     long int ru_nswap;
  191.     /* Number of input operations via the file system.  Note: This
  192.        and `ru_oublock' do not include operations with the cache.  */
  193.     long int ru_inblock;
  194.     /* Number of output operations via the file system.  */
  195.     long int ru_oublock;
  196.     /* Number of IPC messages sent.  */
  197.     long int ru_msgsnd;
  198.     /* Number of IPC messages received.  */
  199.     long int ru_msgrcv;
  200.     /* Number of signals delivered.  */
  201.     long int ru_nsignals;
  202.     /* Number of voluntary context switches, i.e. because the process
  203.        gave up the process before it had to (usually to wait for some
  204.        resource to be available).  */
  205.     long int ru_nvcsw;
  206.     /* Number of involuntary context switches, i.e. a higher priority process
  207.        became runnable or the current process used up its time slice.  */
  208.     long int ru_nivcsw;
  209.   };
  210.  
  211. /* Priority limits.  */
  212. #define PRIO_MIN    -20    /* Minimum priority a process can have.  */
  213. #define PRIO_MAX    20    /* Maximum priority a process can have.  */
  214.  
  215. /* The type of the WHICH argument to `getpriority' and `setpriority',
  216.    indicating what flavor of entity the WHO argument specifies.  */
  217. enum __priority_which
  218. {
  219.   PRIO_PROCESS = 0,        /* WHO is a process ID.  */
  220. #define PRIO_PROCESS PRIO_PROCESS
  221.   PRIO_PGRP = 1,        /* WHO is a process group ID.  */
  222. #define PRIO_PGRP PRIO_PGRP
  223.   PRIO_USER = 2            /* WHO is a user ID.  */
  224. #define PRIO_USER PRIO_USER
  225. };
  226.